Clock pulse generator

ABSTRACT

A clock generator circuit includes a clock divider circuit, a clock pulse control circuit, a phase shifter circuit, and a clock multiplexer circuit. The clock divider circuit is configured to generate a divided clock having a frequency that is a programmable fraction of a frequency of an input clock. The clock pulse control circuit is coupled to the clock divider circuit, and is configured to generate a pulse shaped clock that includes a clock burst comprising a programmable number of adjacent cycles of the divided clock. The phase shifter circuit is coupled to the clock control circuit, and is configured to generate a plurality of phase shifted clocks. Each of phase shifted clocks is a differently delayed version of the pulse shaped clock. The clock multiplexer circuit is coupled to the phase shifter circuit, and is configured to selectively route each of the phase shifted clocks to an output terminal.

RELATED APPLICATIONS

This application claims priority to India Provisional Application No. 201841045302, filed Nov. 30, 2018, and U.S. Provisional Application No. 62/776,370 filed Dec. 6, 2018, which are hereby incorporated by reference.

BACKGROUND

Identifying faults in a semiconductor device is an important step of the manufacturing process. As the geometries of semiconductor devices shrink, failures caused by defects in the manufacturing process and shrinking design margins are becoming increasingly common. Examples of such failures include those caused by timing-related faults.

SUMMARY

Clock generator circuits that provide a single path for producing functional and at-speed test clock signals are disclosed herein. In one example, a clock generator circuit for generating functional and test clock signals includes a clock divider circuit, a phase shifter circuit, and a clock multiplexer circuit. The clock divider circuit includes a clock input terminal and a divided clock output terminal. The phase shifter circuit is coupled to the clock divider circuit, and includes a pulse input terminal and a plurality of phased clock output terminals. The pulse input terminal is coupled to the divided clock output terminal. The clock multiplexer circuit is coupled to the phase shifter circuit, and includes a plurality of input terminals and a plurality of clock domain output terminals. Each of the pulse input terminals is connected to a different one of the phased clock output terminals.

In another example, a method for functional and test clock generation includes dividing, by a clock divider circuit, an input clock by a programmable divisor, thereby producing a divided clock. The divided clock is gated, by a clock pulse control circuit, thereby producing a pulse shaped clock as a selected number of pulses of the divided clock. The pulse shaped clock is phase shifted, by a phase shifter circuit, thereby producing a plurality of phase shifted clocks each having a different phase. Each of the phase shifted clocks is selectably routed, by a clock multiplexer circuit, to different clock domain of a circuit.

In a further example, a clock generator circuit for generating functional and test clock signals includes a clock divider circuit, a phase shifter circuit, and a clock multiplexer circuit. The clock divider circuit is configured to generate a divided clock that is a programmable fraction of an input clock. The phase shifter circuit is coupled to the clock divider circuit, and is configured to generate a plurality of phase shifted clocks. Each of the phase shifted clocks include a differently delayed version of cycles of the divided clock generated by the clock divider circuit. The clock multiplexer circuit is coupled to the phase shifter circuit, and is configured to selectively route each of the phase shifted clocks to an output terminal.

BRIEF DESCRIPTION OF THE DRAWINGS

For a detailed description of various examples, reference will now be made to the accompanying drawings in which:

FIG. 1 shows a block diagram for an example clock generator that produces clocks for functional and at-speed testing in a system-on-chip (SoC) in accordance with the present disclosure;

FIGS. 2A and 2B show an example schematic level diagram for the clock generator of FIG. 1;

FIG. 3 shows an example timing diagram for clock signals generated by the clock generator of FIGS. 2A and 2B.

FIG. 4 shows a block diagram for another example clock generator that produces clocks for functional and at-speed testing in an SoC in accordance with the present disclosure; and

FIG. 5 shows a flow diagram for a method for generating functional and at-speed test clocks in an SoC in accordance with the present disclosure.

DETAILED DESCRIPTION

Certain terms have been used throughout this description and claims to refer to particular system components. As one skilled in the art will appreciate, different parties may refer to a component by different names. This document does not intend to distinguish between components that differ in name but not function. In this disclosure and claims, the terms “including” and “comprising” are used in an open-ended fashion, and thus should be interpreted to mean “including, but not limited to . . . .” Also, the term “couple” or “couples” is intended to mean either an indirect or direct connection. Thus, if a first device couples to a second device, that connection may be through a direct connection or through an indirect connection via other devices and connections. The recitation “based on” is intended to mean “based at least in part on.” Therefore, if X is based on Y, X may be a function of Y and any number of other factors.

Complex integrated circuits, such as a system-on-chip (SoC), include multiple clock domains. In some such circuits, the different clock domains apply different phases of the same clock. Communication between the different clock domains is generally required. At-speed testing is employed to identify faults in an SoC. At-speed testing exercises the circuitry of the SoC at system operational speeds, and using the system clock routing, to identify circuit faults.

Some systems that provide at-speed testing include a functional clock generator that generates the functional clocks applied in normal system operation, and a test clock generator that produces the test clocks applied in at-speed testing. The test clock generator controls and shapes the test clock as needed for a given test. However, such systems are subject to a number issues. Examples of these issues include: 1) inclusion of the two clock sources results in additional logic during clock path timing closure that can cause routing congestion and increase circuit area and power consumption; 2) circuitry of the functional clock generator is not covered by the at-speed testing; 3) separate clock trees are required for functional operation and test operation; and 4) the edge relationships between multiple clock phases generated by the functional clock generator must be replicated during at-speed testing, which requires complex alignment and clock shaping by the test clock generator.

Implementations of the clock generator disclosed herein provide a single clock generation path that employs the same circuitry to generate clock for functional operation and at-speed testing of a system. By providing a signal clock generation path for both functional operation and at-speed testing, the clock generators of the present disclosure eliminate the problems associated with separate clock generators explained above. The clock generator includes a clock divider circuit that divides a high-speed input clock to produce a divided clock. A clock pulse controller circuit selects pulses of the divided clock to pass to a phase shifter circuit. The phase shifter circuit generates multiple phases of the clock pulses received from the clock pulse controller. A clock multiplexer circuit selectively passes each of the phase clocks generated by the phase shifter circuit to the various clock domain circuits of an SoC.

FIG. 1 shows a block diagram for an example clock generator 100 that produces clocks for functional and at-speed testing in a system-on-chip (SoC) in accordance with the present disclosure. The clock generator 100 provides clocks to multiple clock domains of the SoC. In FIG. 1, the clock generator 100 provides clock signal 124 to the circuitry of clock domain 132, clock signal 126 to the circuitry of clock domain 134, clock signal 128 to the circuitry of clock domain 136, and clock signal 130 to the circuitry of clock domain 138. The clock signals 124-130 are different phases of the same clock signal.

The clock generator 100 generates the clock signals 124-130 for functional operation of the circuitry of the clock domains 132-138 and at-speed testing of the circuitry of the clock domains 132-138 using the same circuitry and clock processing path. Accordingly, the clock generator 100 is exercised when generating clocks for at-speed testing, and the edge timing relationships of the clock signals 124-130 are the same for functional operation and at-speed testing.

The clock generator 100 includes a clock divider circuit 102, clock pulse control circuit 104, phase shifter circuit 106, and clock multiplexer circuit 108. The clock divider circuit 102 receives an input clock 110 and a programmable divisor 140. The clock divider circuit 102 includes circuitry that divides the input clock 110 by the programmable divisor 140 to produce a divided clock 112 having a frequency that is a fraction of the frequency of the input clock 110. For example, if the programmable divisor 140 is set to divide the input clock 110 by four, then the frequency of the divided clock 112 is ¼ the frequency of the input clock 110. Implementations of the clock divider circuit 102 include circuitry to divide the input clock 110 by any integer value.

The clock pulse control circuit 104 receives the divided clock 112 generated by the clock divider circuit 102 and applies pulse shaping to the divided clock 112. For example, on deactivation of the scan enable signal 142, the clock pulse control circuit 104 generates an envelope signal that enables a predetermined number of cycles of the divided clock 112 to pass through the clock pulse control circuit 104 as the pulse shaped clock 114. Implementations of the clock pulse control circuit 104 include circuitry that passes any number of cycles of the divided clock 112 as the pulse shaped clock pulse shaped clock 114. The clock pulse control circuit 104 provides the pulse shaped clock 114 to the phase shifter circuit 106.

The phase shifter circuit 106 receives and applies a plurality of different delays to the pulse shaped clock 114 to produce the phase shifted clocks 116-122. For example, the phase shifter circuit 106 delays the pulse shaped clock 114 by one cycle of the input clock 110 to produce phase shifted clock 116, delays the pulse shaped clock 114 by two cycles of the input clock 110 to produce the phase shifted clock 118, delays the pulse shaped clock 114 by three cycles of the input clock 110 to produce the phase shifted clock 120, and delays the pulse shaped clock 114 by four cycles of the input clock 110 to produce the phase shifted clock 122. Implementations of the phase shifter circuit 106 include circuitry to generate any number of phase shifted clocks, where each phase shifted clock is delayed by a different number of cycles of the input clock 110. The phase shifter circuit 106 provides the phase shifted clocks 116-122 to the clock multiplexer circuit 108.

The clock multiplexer circuit 108 includes selection circuitry that selects a signal to route to each of a plurality of clock domain outputs, where each clock domain output provides a clock signal for use in one of the clock domains 132-138. The clock multiplexer circuit 108 provides the clock signal 124 to the clock domain 132, provides the clock signal 126 to the clock domain 134, provides the clock signal 128 to the clock domain 136, and provides the clock signal 130 to the clock domain 138. Selection circuitry selects one of the phase shifted clock 116, the scan clock signal 144, or no clock signal to provide as the clock signal 124, selects one of the phase shifted clock 118, the scan clock signal 144, or no clock signal to provide as the clock signal 126, selects one of the phase shifted clock 118, the scan clock signal 144, or no clock signal to provide as the clock signal 128, and selects one of the phase shifted clock 122, the scan clock signal 144, or no clock signal to provide as the clock signal 130. Implementations of the clock multiplexer circuit 108 include any number of clock signal outputs and a corresponding number of selection circuits.

FIGS. 2A and 2B shows an example schematic level diagram for a clock generator 200. The clock generator 200 is an implementation of the clock generator 100. The clock generator 200 includes a clock divider circuit 202, a clock pulse control circuit 204, a phase shifter circuit 206, and a clock multiplexer circuit 208. The clock divider circuit 202, the clock pulse control circuit 204, the phase shifter circuit 206, and the clock multiplexer circuit 208 are implementations of the clock divider circuit 102, the clock pulse control circuit 104, the phase shifter circuit 106, and the clock multiplexer circuit 108 respectively. The clock divider circuit 202 is coupled to the clock pulse control circuit 204, and to the phase shifter circuit 206 via the clock pulse control circuit 204.

The clock divider circuit 202 includes a clock input terminal 203, a divided clock output terminal 205, and a plurality of serially coupled flip-flops and selection circuits that form a programmable ring counter. While the clock divider circuit 202, as shown in FIG. 2A, includes four flip-flops (flip-flop 210, flip-flop 212, flip-flop 214, and flip-flop 216) and four selection circuits (selection circuit 218, selection circuit 220, selection circuit 222, and selection circuit 224), various implementations of the clock divider circuit 202 include any number of flip-flops and a corresponding number of selection circuits.

Each of the flip-flops 210-216 includes a clock terminal, a data input terminal, and a data output terminal. The flip-flop 210 includes clock terminal 210C, data input terminal 210D, and data output terminal 210Q. The flip-flop 212 includes clock terminal clock terminal 212C, data input terminal 212D, and data output terminal 212Q. The flip-flop 214 includes clock terminal 214C, data input terminal 214D, and data output terminal 214Q. The flip-flop 216 (output flip-flop 216) includes clock terminal 216C, data input terminal 216D, and data output terminal 216Q. The clock terminal (210C-216C) of each of the flip-flops (210-216) is coupled to the clock input terminal 203. The data output terminal 216Q of the flip-flop 216 is coupled to (or serves as) the divided clock output terminal 205, and is coupled to a first input of each of the selection circuits (i.e. the input 218A of the selection circuit 218, input 220A of the selection circuit 220, input 222A of the selection circuit 222, and input 224A of the selection circuit 224). A second input of each of the selection circuits is coupled to zero or to the output of one of the flip-flops (i.e., the input 218B of the selection circuit 218 is connected to ground, the input 220B of the selection circuit 220 is coupled to the data output terminal 210Q of the flip-flop 210, the input 222B of the selection circuit 222 is coupled to the data output terminal 212Q of the flip-flop 212, and the input 224B of the selection circuit 224 is coupled to the data output terminal 214Q of the flip-flop 214), The output of each of the selection circuits is coupled to the data input terminal of a different one of the flip-flops. The output 218C is coupled to the data input terminal 210D, the output 220C is coupled to the data input terminal 212D, the output 220C is coupled to the data input terminal 214D, and the output 222C is coupled to the data input terminal 216D. Each of the selection circuits includes a control terminal that receives the programmable divisor 140 to control selection of feedback from the flip-flop 216 or output of the previous flip-flop in the clock divider circuit 202. The control terminal 218D of the selection circuit 218, the control terminal 220D of the selection circuit 220, the control terminal 222D of the selection circuit 222, and the control terminal 224D of the selection circuit 224 receive the programmable divisor 140.

The divided clock 112 generated by the clock divider circuit 202 is provided to the clock pulse control circuit 204. The clock pulse control circuit 204 receives the divided clock 112 and passes a selected number of adjacent cycles of the divided clock 112 to generate the pulse shaped clock 114. The clock pulse control circuit 204 includes clock gating circuitry 226, and pulse enable circuitry 227 that is coupled to the clock gating circuitry 226. The pulse enable circuitry 227 generates an envelope signal 231 that identifies the cycles of the divided clock 112 to be passed by the clock gating circuitry 226. The clock gating circuitry 226 includes an input terminal 226A, that is coupled to the divided clock output terminal 205, to receive the divided clock 112, an input terminal 226B to receive the envelope signal, and an output terminal 226C. The clock gating circuitry 226 also includes an override input 226D via which an override signal 225 is provided to the clock gating circuitry 226. When active, the override signal 225, causes the clock gating circuitry 226 to pass all cycles of the divided clock 112. The clock gating circuitry 226 includes combinatorial logic, such as an AND gate that passes the divided clock 112 when either the override signal or the envelope signal 231 generated by the pulse enable circuitry 227 is active.

The pulse enable circuitry 227 includes a shift register 229 and logic circuitry 228. The shift register 229 includes a plurality of flip-flops that shift a logic “1” into the shift register when the scan enable signal 142 is deactivated. The pulse enable circuitry 227 includes flip-flop 232, flip-flop 234, flip-flop 236, and flip-flop 238. Clock inputs of -the flip-flops 232-238 (i.e., clock input terminal 232C of the flip-flop 232, clock input terminal 234C of the flip-flop 234, clock input terminal 236C of the flip-flop 236, and clock input terminal 238C of the flip-flop 238) are coupled to the divided clock output terminal 205 and receive the divided clock 112. An input terminal 232D of the flip-flop 232 is coupled to receive the scan enable signal 142, the input terminal 234D of the flip-flop 234 is coupled to the output terminal 232Q of the flip-flop 232, the input terminal 236D of the flip-flop 236 is coupled to the output terminal 234Q of the flip-flop 234, and the input terminal 238D of the flip-flop 238 is coupled to the output terminal 236Q of the flip-flop 236. The logic circuitry 228 includes combinatorial logic that combines the outputs the flip-flop 232 and the flip-flop 238 to generate the envelope signal 231. The logic circuitry 228 includes input terminal 228A and input terminal 228B that are respectively coupled to the output terminal 232Q and the output terminal 238Q. The logic circuitry 228 includes an output terminal 228C that is coupled to an input terminal 226B of the clock gating circuitry 226. Some implementations of the pulse enable circuitry 227 include a different number of flip-flops and the logic circuitry 228 combines outputs of selected flip-flops to generate the envelope signal 231.

The clock pulse control circuit 204 provides the pulse shaped clock 114 to the phase shifter circuit 206. The phase shifter circuit 206 includes a shift register 211 that applies the input clock 110 to shift the pulse shaped clock 114 thereby generating a plurality of different phase shifted clocks. Each phase shifted clock is a differently delayed version of the pulse shaped clock 114. The shift register 211 includes flip-flop 240, flip-flop 242, flip-flop 244, and flip-flop 246 coupled in series. Some implementations of the shift register 211 include a different number of flip-flops coupled in series. Clock inputs of the flip-flops 240-246 (i.e., clock input terminal 240C of the flip-flop 240, clock input terminal 242C of the flip-flop 242, clock input terminal 244C of the flip-flop 244, and clock input terminal 246C of the flip-flop 246) are coupled to the clock input terminal 203 and receive the input clock 110. The data input of each successive flip-flop is coupled to the output of the preceding flip-flop. The data input terminal 246D of the flip-flop 246 (also referred to as pulse input terminal 246D) is coupled to the output terminal 226C of the clock gating circuitry 226 (and to the divided clock output terminal 205 via the clock gating circuit 226). The data input terminal 244D of the flip-flop 244 is coupled to the output terminal 246Q of the flip-flop 246, the data input terminal 242D of the flip-flop 242 is coupled to the output terminal 244Q of the flip-flop 244, and the data input terminal 240D is the flip-flop 240 is coupled to the output terminal 242Q of the flip-flop 242. Each of the output terminals of the flip-flops (phased clock output terminal 240Q, phased clock output terminal 242Q, phased clock output terminal 244Q, and phased clock output terminal 246Q) provides one of the phase shifted clocks.

The phase shifter circuit 206 is coupled to and provides the phase shifted clocks to the clock multiplexer circuit 208. The clock multiplexer circuit 208 includes a plurality of pulse gate circuits. One of the pulse gate circuits selectively passes each of the phase shifted clocks based on a pulse control signal specific to the phase shifted clock. Each of the pulse gate circuits includes a gate, such as an AND gate, to control passage of the phase shifted clock. The pulse gate circuit 248 is coupled to the flip-flop 240 to control passage of the phase shifted clock 247. The pulse gate circuit 248 includes a pulse input terminal 248A coupled to the output terminal 240Q of the flip-flop 240 and an input terminal 248B coupled to a pulse control input terminal 272. The pulse gate circuit 250 is coupled to the flip-flop 242 to control passage of the phase shifted clock 249. The pulse gate circuit 250 includes a pulse input terminal 250A coupled to the output terminal 242Q of the flip-flop 242 and an input terminal 250B coupled to a pulse control input terminal 274. The pulse gate circuit 252 is coupled to the flip-flop 244 to control passage of the phase shifted clock 251. The pulse gate circuit 252 includes a pulse input terminal 252A coupled to the output terminal 244Q of the flip-flop 244 and an input terminal 252B coupled to a pulse control input terminal 276. The pulse gate circuit 254 is coupled to the flip-flop 246 to control passage of the phase shifted clock 253. The pulse gate circuit 254 includes a pulse input terminal 254A coupled to the output terminal 246Q of the flip-flop 246 and an input terminal 254B coupled to a pulse control input terminal 278. Some implementations of the clock multiplexer circuit 208 include a different number of pulse gate circuits.

The clock multiplexer circuit 208 also includes a plurality of selector circuits. Each of the selector circuits selectively passes either the output of a corresponding pulse gate circuit (e.g., a phase shifted clock) or the scan clock signal 144. The clock multiplexer circuit 208 includes selector circuit 260, selector circuit 262, selector circuit 264, and selector circuit 266. Some implementations of the clock generator 200 include a different number of selector circuits. A first input of each of the selector circuits receives the scan clock signal 144. The input terminal 260A of the selector circuit 260, the input terminal 262A of the selector circuit 262, the input terminal 264A of the selector circuit 264, and the input terminal 266A of the selector circuit 266 are coupled to a scan shift clock input terminal 268 to receive the scan clock signal 144. The selector circuits are controlled by the scan enable signal 142.

A control input terminal (260C, 262C, 264C, and 264C) of the selector circuits 260-264 is coupled to a scan enable input terminal 270 and controlled by the scan enable signal 142. A second input of each of the selector circuits is coupled to one of the pulse gate circuits 248-254. The input terminal 260B of the selector circuit 260 is coupled to the output 248C of the pulse gate circuit 248. The input terminal 262B of the selector circuit 262 is coupled to the output 250C of the pulse gate circuit 250. The input terminal 264B of the selector circuit 264 is coupled to the output 252C of the pulse gate circuit 252. The input terminal 266B of the selector circuit 266 is coupled to the output 254C of the pulse gate circuit 254.

Outputs of the selector circuits 260-266 provide the clock signals 124-130 to the different clock domains 132-138. The clock domain output terminal 260D of the selector circuit 260 provides the clock signal 124 for use in the clock domain 132. The clock domain output terminal 262D of the selector circuit 262 provides the clock signal 126 for use in the clock domain 134. The clock domain output terminal 264D of the selector circuit 264 provides the clock signal 128 for use in the clock domain 136. The clock domain output terminal 266D of the selector circuit 266 provides the clock signal 130 for use in the clock domain 138. The clock domain output terminals 260D, 262 d, 264D, and 266D serve as the clock output terminals of the clock generator 200 in some implementations.

FIG. 3 shows an example timing diagram for clock signals generated by the clock generator of FIGS. 2A and 2B. The clock divider circuit 202 divides the input clock 110, in this example, by four to produce the divided clock 112. The pulse enable circuitry 227 generates the envelope signal 231, and the clock gating circuitry 226 applies the envelope signal 231 to gate the divided clock 112 and produce the pulse shaped clock 114. The phase shifter circuit 206 applies the input clock 110 to delay the pulse shaped clock 114, and generate the phase shifted clock 116, the phase shifted clock 118, the phase shifted clock 120, and the phase shifted clock 122. The clock multiplexer circuit 208 applies the pulse control signal 280, the pulse control signal 282, the pulse control signal 284, and the pulse control signal 286 to gate the phase shifted clock 116, the phase shifted clock 118, the phase shifted clock 120, and the phase shifted clock 122 and produce the clock signal 124, the clock signal 126, the clock signal 128, and the clock signal 130 respectively.

FIG. 4 shows block diagram for an example clock generator 400 that produces clocks for functional and at-speed testing in an SoC system-on-chip in accordance with the present disclosure. The clock generator 400 is similar to the clock generator 100. The clock generator 400 provides clocks to multiple clock domains of the SoC. In FIG. 4, the clock generator 400 provides clock signal 124 to the circuitry of clock domain clock domain 132, clock signal 126 to the circuitry of clock domain 134, clock signal 128 to the circuitry of clock domain 136, and clock signal 130 to the circuitry of clock domain 138. The clock signals 124-130 are different phases of the same clock signal.

The clock generator 400 generates the clock signals 124-130 for functional operation of the circuitry of the clock domains 132-138 and at-speed testing of the circuitry of the clock domains 132-138 using the same circuitry and clock processing path. Accordingly, the clock generator 400 is exercised when generating clocks for at-speed testing, and the phase timing of the clock signals 124-130 is the same for functional operation and at-speed testing.

The clock generator 400 includes clock divider circuit 402, phase shifter circuit 406, and clock multiplexer and pulse control circuitry 408. The clock divider circuit 402 is the same as the clock divider circuit 102 and the phase shifter circuit 406 is the same as the phase shifter circuit 106 in some implementations of the clock generator 400. The clock divider circuit 402 receives an input clock 110 and a programmable divisor 140. The clock divider circuit 402 includes circuitry (such as the clock divider circuit 202) that divides the input clock 110 by the programmable divisor 140 to produce a divided clock 112 having a frequency that is a fraction of the frequency of the input clock 110. For example, if the programmable divisor 140 is set to divide the input clock 110 by four, then the frequency of the divided clock 112 is ¼ the frequency of the input clock 110. Implementations of the clock divider circuit 402 include circuitry to divide the input clock 110 by any integer value.

The phase shifter circuit 406 receives the divided clock 112 generated by the clock divider circuit 102 and applies a plurality of different delays to the divided clock 112 to produce the phase shifted clocks 416-422. For example, the phase shifter circuit 406 delays the divided clock 112 by one cycle of the input clock 110 to produce the phase shifted clock 416, delays the pulse shaped clock 114 by two cycles of the input clock 110 to produce the phase shifted clock 418, delays the pulse shaped clock 114 by three cycles of the input clock 110 to produce the phase shifted clock 420, and delays the pulse shaped clock 114 by four cycles of the input clock 110 to produce the phase shifted clock 416. Implementations of the phase shifter circuit 406 include circuitry to generate any number of phase shifted clocks, where each phase shifted clock is delayed by a different number of cycles of the input clock 110. The phase shifter circuit 406 provides the phase shifted clocks 416-422 to the clock multiplexer and pulse control circuitry 408. Thus, in the phase shifter circuit 406, the pulse input terminal 246D is coupled to the divided clock output terminal 205 of the clock divider circuit 202.

The clock multiplexer and pulse control circuitry 408 includes selection circuitry that selects a signal to route to each of a plurality of clock domain outputs, where each clock domain output provides a clock signal for use in one of the clock domains 132-138. The selection circuitry of the clock multiplexer and pulse control circuitry 408 may include the selector circuits 260-266 of FIG. 2B. The clock multiplexer and pulse control circuitry 408 also includes gating circuitry that gates the phase shifted clocks 416-422 to apply pulse shaping to the phase shifted clocks 416-422. For example, an implementation of the clock multiplexer and pulse control circuitry 408 may include circuitry similar to the pulse enable circuitry 227 to generate the control signal 280, the control signal 282, the control signal 284, and/or the control signal 286 allowing the gate circuit 254, the gate circuit 252, the gate circuit 250, and the gate circuit 248 to pass a selected number of cycles of the phase shifted clocks 416-422, thereby producing pulse shaped versions of the phase shifted clocks 416-422.

FIG. 5 shows a flow diagram for a method 500 for generating functional and at-speed test clocks in an SoC in accordance with the present disclosure. Though depicted sequentially as a matter of convenience, at least some of the actions shown can be performed in a different order and/or performed in parallel. Additionally, some implementations may perform only some of the actions shown.

In block 502, a clock divisor value is set to control operation of the clock divider circuit 102. The clock divisor value is an integer value encoded for use by the clock divider circuit 102. For example, in FIG. 3, the clock divisor value is set divide the input clock 110 by 4.

In block 504, the clock divider circuit 102 applies the clock divisor value to divide the input clock 110 and produce the divided clock 112. For example, in FIG. 3, the clock divider circuit 102 divides the input clock 110 by four to produce the divided clock 112.

In block 506, clock pulse control circuit 104 generates a pulse shaping envelop to gate the divided clock 112. For example, in FIG. 3, the pulse enable circuitry 227 generates the envelope signal 231 for use in selecting a number of adjacent cycles of the divided clock 112.

In block 508, the clock pulse control circuit 104 applies the pulse shaping envelope to generate in bock 506 to pass the selected cycles of the divided clock 112. For example, in FIG. 3, the clock gating circuitry 226 applies the envelope signal 231 to gate the divided clock 112 and generate the pulse shaped clock 114.

In block 510, the phase shifter circuit 206 applies the input clock 110 to delay the pulse shaped clock 114. Different values of delay are applied to the pulse shaped clock 114 to generate the phase shifted clock 116, the phase shifted clock 118, the phase shifted clock 120, and the phase shifted clock 122. For example, a different number of cycles of the input clock 110 are applied to the pulse shaped clock 114 to generate each of the phase shifted clock 116, the phase shifted clock 118, the phase shifted clock 120, and the phase shifted clock 122.

In block 512, the clock multiplexer circuit 208 applies the control signal 280, the control signal 282, the control signal 284, and the control signal 286 to gate the phase shifted clock 116, the phase shifted clock 118, the phase shifted clock 120, and the phase shifted clock 122 respectively.

In block 514, the clock multiplexer circuit 208 selects the gated phase shifted clocks or the scan shift clock to pass to each of the clock domains 132-138 based on the state of the scan enable signal 142. For example, the clock multiplexer circuit 208 selects: the gated phase shifted clock 255 or the scan clock signal 144 to pass to the clock domain 132, the gated phase shifted clock 253 or the scan clock signal 144 to pass to the clock domain 134, the gated phase shifted clock 251 or the scan clock signal 144 to pass to the clock domain 136, and the gated phase shifted clock 249 or the scan clock signal 144 to pass to the clock domain 138.

The above discussion is meant to be illustrative of the principles and various embodiments of the present invention. Numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications. 

What is claimed is:
 1. A clock generator circuit, comprising: a clock divider circuit comprising: a clock input terminal; and a divided clock output terminal; a phase shifter circuit coupled to the clock divider circuit, and comprising: a pulse input terminal coupled to the divided clock output terminal; and a plurality of phased clock output terminals; a clock multiplexer circuit coupled to the phase shifter circuit, and comprising: a plurality of pulse input terminals, each of the pulse input terminals connected to a different one of the phased clock output terminals; a plurality of clock domain output terminals; wherein the clock divider circuit comprises: a plurality of flip-flops, each of the flip-flops comprising: a clock terminal connected to the clock input terminal; a data input terminal; and a data output terminal; wherein the data output terminal of one of the flip-flops serves as the divided clock output terminal; and a plurality of selection circuits, each of the selection circuits comprising: an output terminal; a first input terminal; a second input terminal; and a control terminal; wherein: the first input terminal of each of the selection circuits is connected to the data output terminal of a same one of the flip-flips; the second input terminal of each of the selection circuits is connected to the data output terminal of a different one of the flip-flops; and the output terminal of each of the selection circuits is connected to the data input terminal of a different one of the flip-flops.
 2. A clock generator circuit comprising: a clock divider circuit comprising: a clock input terminal; and a divided clock output terminal; a phase shifter circuit coupled to the clock divider circuit, and comprising: a pulse input terminal coupled to the divided clock output terminal; and a plurality of phased clock output terminals; a clock multiplexer circuit coupled to the phase shifter circuit, and comprising: a plurality of pulse input terminals, each of the pulse input terminals connected to a different one of the phased clock output terminals; a plurality of clock domain output terminals; further comprising a clock pulse control circuit coupled to the clock divider circuit and the phase shifter circuit, and comprising: clock gating circuitry comprising: a first input coupled to the divided clock output terminal; and an output terminal; and pulse enable circuitry coupled to the clock gating circuitry, and comprising: a shift register comprising: a plurality of flip-flops, each of the flip-flops comprising; a clock input terminal coupled to the divided clock output terminal; and an output terminal; logic circuitry comprising: a plurality of input terminals, each of the input terminals coupled to the output terminal of one of the flip-flops of the shift register; and an output terminal coupled to a second input terminal of the clock gating circuitry.
 3. The clock generator circuit of claim 2, wherein the phase shifter circuit comprises a shift register comprising: a pulse input terminal coupled to the output terminal of the clock gating circuitry; a plurality of flip-flops coupled in series, each of the flip-flops comprising: a clock input terminal coupled to the clock input terminal of the clock divider circuit; an output terminal that serves as one of the phased clock output terminals.
 4. A clock generator circuit comprising: a clock divider circuit comprising: a clock input terminal; and a divided clock output terminal; a phase shifter circuit coupled to the clock divider circuit, and comprising: a pulse input terminal coupled to the divided clock output terminal; and a plurality of phased clock output terminals; a clock multiplexer circuit coupled to the phase shifter circuit, and comprising: a plurality of pulse input terminals, each of the pulse input terminals connected to a different one of the phased clock output terminals; a plurality of clock domain output terminals; wherein the clock multiplexer circuit comprises: a plurality of pulse control input terminals; and a plurality of pulse gates, each of the pulse gates comprising: a first input terminal coupled to one of the phased clock output terminals; a second input terminal coupled to one of the pulse control input terminals; and an output terminal.
 5. The clock generator circuit of claim 4, wherein the clock multiplexer circuit comprises a plurality of selector circuits, each of the selector circuits comprising: a first input terminal coupled to the output terminal of one of the pulse gates; a second input terminal coupled to a scan shift clock input terminal; a control terminal coupled to scan enable terminal; and an output terminal serving as one of the clock domain output terminals.
 6. A method for functional and test clock generation, comprising: dividing, by a clock divider circuit, an input clock by a programmable divisor, thereby producing a divided clock; gating, by a clock pulse control circuit, the divided clock thereby producing a pulse shaped clock as a selected number of pulses of the divided clock; phase shifting, by a phase shifter circuit, the pulse shaped clock thereby producing a plurality of phase shifted clocks each having a different phase; and selectably routing, by a clock multiplexer circuit, each of the phase shifted clocks to different clock domain of a circuit.
 7. The method of claim 6, further comprising configuring a selection circuit of the clock divider circuit to implement the programmable divisor by selectively routing feedback from an output flip-flop of the clock divider circuit to a data input of a flip-flop coupled to the selection circuit.
 8. The method of claim 6, further comprising: generating an envelope signal based on the divided clock, wherein the envelope signal is active for a predetermined number of cycles of the divided; and gating the divided clock with the envelope signal to produce the pulse shaped clock.
 9. The method of claim 6, wherein the phase shifting comprises delaying the pulse shaped clock in a plurality of serially coupled flip-flops.
 10. The method of claim 9, further comprising clocking the flip-flops with the input clock.
 11. The method of claim of claim 6, further comprising gating each phase shifted clock routed to the clock multiplexer circuit based on a pulse control signal corresponding to the phase shifted clock.
 12. The method of claim 6, wherein the selectably routing comprises, for each of the phase shifted clocks: selecting the phase shifted clock as output of the clock multiplexer circuit based on a scan enable signal having a first state; and selecting a scan clock as output of the multiplexer circuit based on the scan enable signal having a second state.
 13. A clock generator circuit comprising: a clock divider circuit configured to generate a divided clock that is a programmable fraction of an input clock; a phase shifter circuit coupled to the clock divider circuit, and configured to generate a plurality of phase shifted clocks, wherein each of the phase shifted clocks comprises a differently delayed version of cycles of the divided clock generated by the clock divider circuit; a clock multiplexer circuit coupled to the phase shifter circuit, and configured to selectively route each of the phase shifted clocks to an output terminal; wherein the clock divider circuit comprises: a plurality of serially coupled flip-flops; and a selection circuit coupled to a data input terminal of each of the flip-flops, the selection circuit configured to: selectively route a feedback signal from an output of a first of the flip-flops to the data input of a second of the flip-flops; wherein the divided clock is provided at the output of the first of the flip-flops; and selectively rout an output signal from an output of the second of the flip-flops to the data input of a third of the flop-flops.
 14. A clock generator circuit comprising: a clock divider circuit configured to generate a divided clock that is a programmable fraction of an input clock; a phase shifter circuit coupled to the clock divider circuit, and configured to generate a plurality of phase shifted clocks, wherein each of the phase shifted clocks comprises a differently delayed version of cycles of the divided clock generated by the clock divider circuit; a clock multiplexer circuit coupled to the phase shifter circuit, and configured to selectively route each of the phase shifted clocks to an output terminal; further comprising: a clock pulse control circuit coupled to the clock divider circuit and the phase shifter circuit, and configured to generate a pulse shaped clock that includes a clock burst comprising a programmable number of adjacent cycles of the divided clock; wherein: the clock pulse control circuit comprises: pulse enable circuitry configured to generate an envelope signal corresponding to the programmable number of adjacent cycles of the divided clock; and the pulse shaped clock comprises the cycles of the divided clock generated by the clock divider circuit.
 15. The clock generator circuit of claim 14, wherein the clock pulse control circuit comprises logic circuitry coupled to the pulse enable circuitry, and configured to pass the divided clock based on the envelope signal.
 16. A clock generator circuit comprising: a clock divider circuit configured to generate a divided clock that is a programmable fraction of an input clock; a phase shifter circuit coupled to the clock divider circuit, and configured to generate a plurality of phase shifted clocks, wherein each of the phase shifted clocks comprises a differently delayed version of cycles of the divided clock generated by the clock divider circuit; a clock multiplexer circuit coupled to the phase shifter circuit, and configured to selectively route each of the phase shifted clocks to an output terminal; further comprising gating circuitry coupled to the phase shifter circuit, the gating circuitry configured to selectable pass each of the phase shifted clocks to the clock multiplexer circuit based on a pulse control signal corresponding to the phase shifted clock. 